package tag_api

import (
	"github.com/gin-gonic/gin"
	"giv-vue-blog/global"
	"giv-vue-blog/models"
	"giv-vue-blog/models/res"
)

type TagRequest struct {
	//structs:"title" 这是结构体快速转map引用的一个包
	Title string `json:"title" binding:"required" structs:"title" msg:"请输入标签"` //标签
}

// TagAddView 创建标签
// @Summary 创建标签
// @Description 创建标签
// @Tags 标签管理
// @Accept json
// @Produce json
// @Param tag body TagRequest true "请求参数"
// @Success 200 {object} res.Response "操作成功"
// @Failure 400 {object} res.Response "请求参数错误"
// @Failure 500 {object} res.Response "服务器内部错误"
// @Router /api/tag  [post]
func (TagApi) TagAddView(c *gin.Context) {
	var ad TagRequest
	err := c.ShouldBindJSON(&ad)
	if err != nil {
		res.FailedWithError(err, &ad, c)
		return
	}
	//根据title进行 重复判断
	var tag models.TagModel
	err = global.DB.Take(&tag, "title=?", ad.Title).Error
	if err == nil {
		res.FailedWithMsg("标签已存在", c)
		return
	}
	err = global.DB.Create(&models.TagModel{
		Title: ad.Title,
	}).Error
	if err != nil {
		global.Log.Error(err)
		res.FailedWithMsg("添加标签失败", c)
		return
	}
	res.Ok(gin.H{
		"title": ad.Title,
	}, "添加标签成功", c)
}
